package zuo.from0516.other.day07;

import zuo.from0516.other.day06.TreeNode;

/**
 * Q112:路径之和：
 * 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。
 * 判断该树中是否存在 根节点到叶子节点 的路径，
 * 这条路径上所有节点值相加等于目标和 targetSum 。
 * 如果存在，返回 true ；否则，返回 false 。
 * 叶子节点 是指没有子节点的节点。
 */
public class Code03_PathSum {

    public static boolean isSum = false;
    public boolean hasPathSum(TreeNode root, int targetSum) {
        if (root == null){
            return false;
        }
        isSum = false;
        pathSum(root, targetSum, 0);
        return isSum;
    }

    public void pathSum(TreeNode root, int targetSum, int curSum){
        if (root.left == null && root.right == null){
            if(root.value + curSum == targetSum){
                isSum = true;
            }
            return;
        }
        curSum += root.value;
        if (root.left != null){
            pathSum(root.left, targetSum, curSum);
        }
        if (root.right != null){
            pathSum(root.right, targetSum, curSum);
        }
    }


}
